package com.dd.cloud.user.mapper.pres;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dd.cloud.user.entity.pres.PresBasics;
import com.dd.cloud.user.entity.pres.PresPrescription;
import com.dd.cloud.user.req.pres.PresPrescriptionMedPageReq;
import com.dd.cloud.user.req.pres.PresPrescriptionPageReq;
import com.dd.cloud.user.res.pres.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 处方表 Mapper 接口
 * </p>
 *
 * @author czg
 * @since 2022-04-27
 */
public interface PresPrescriptionMapper extends BaseMapper<PresPrescription> {

    /**
     * 查询处方信息 不是详情,基本信息
     *
     * @param tencode
     * @return
     */
    PresPrescriptionDetailRes getPresMechanDetail(String tencode);

    /**
     * 查询处方列表
     *
     * @param iPage
     * @param req
     * @return
     */
    IPage<PresPrescriptionPageRes> queryPresPrescriptionPage(IPage<?> iPage, @Param("req") PresPrescriptionPageReq req);

    /**
     * 查询处方列表联合处方草稿查询
     *
     * @param iPage
     * @param req
     * @return
     */
    IPage<PresPrescriptionHistoryPageRes> queryPresPrescriptionHistoryPage(IPage<?> iPage, @Param("req") PresPrescriptionPageReq req);

    /**
     * 查询处方订单信息h5
     *
     * @param tencode
     * @return
     */
    PresDetailH5Res queryPresDetailH5(@Param("tencode") String tencode);

    /**
     * 获取处方出库时间收货时间
     *
     * @param tencode
     * @return
     */
    Map<String, String> getPresOutReceiveTime(@Param("tencode") String tencode);

    /**
     * 查询处方审核拒绝原因最后一次
     *
     * @param tencode
     * @return
     */
    String queryPresReviewRejectReasonLast(@Param("tencode") String tencode);

    /**
     * 患者在线问诊咨询时查询处方历史诊断
     */
    Page<PresPrescriptionMedPageRes> queryPresMedPage(@Param("page") Page<PresPrescriptionMedPageRes> page,
                                                      @Param("req") PresPrescriptionMedPageReq req);

    /**
     * 获取需要发送到监管平台的数据
     */
    List<PresPrescriptionSuperviseRes> getDataToSupervise();

    /**
     * 查询基础处方分页
     *
     * @param page
     * @param doctorId
     * @param keyword
     */
    Page<PresBasics> queryPresBasicPage(
            @Param("page") IPage<PresBasics> page,
            @Param("keyword") String keyword,
            @Param("doctorId") Integer doctorId);
}
